using System.Collections;
using UnityEngine;

public class TRB_Projects_NoelleBerdly : MonoBehaviour
{
	[Header("-= Cutscene Chats =-")]
	[SerializeField]
	private CHATBOXTEXT[] CutsceneChats;

	[SerializeField]
	private AudioClip[] CutsceneClips;

	private Animator Noelle;

	private Animator Berdly;

	private bool LightFollowDucttape;

	private bool SadModeEngaged;

	[SerializeField]
	private SpriteRenderer DuctTape;

	[SerializeField]
	private Sprite DuctTape_Hit;

	[SerializeField]
	private Vector2[] NoelleLeaveWalkPositions;

	[SerializeField]
	private Vector2[] NoelleLeaveWalkDirections;

	private int NoelleLeaveWalkIndex;

	private void Start()
	{
		StartCoroutine(ProjectCutscene());
		Noelle = TRB_Projects_Shared.instance.Noelle;
		Berdly = TRB_Projects_Shared.instance.Berdly;
		Noelle.Play("Idle");
		Berdly.Play("Idle");
		TRB_Projects_Shared.instance.Toriel.Play("IdleN");
		RotateNoelleToDirection(Vector2.down);
		RotateBerdlyToDirection(Vector2.down);
		TRB_Projects_Shared.instance.RotateTorielToDirection(Vector2.down);
		Noelle.transform.position = new Vector2(-0.45f, 0.7f);
		Berdly.transform.position = new Vector2(2.75f, 0.7f);
		CutsceneUtils.RotateCharacterToDirection(TRB_Projects_Shared.instance.Alphys, "VelocityX", "VelocityY", Vector2.left);
		TRB_Projects_Shared.instance.CreateNewLightShadow(new Vector2(1.1f, 1.875f), new Vector2(1.5f, 0.8f));
	}

	private void Update()
	{
		if (LightFollowDucttape)
		{
			TRB_Projects_Shared.instance.CreateNewLightShadow_NoSound(DuctTape.transform.position, new Vector2(0.8f, 0.8f));
		}
	}

	public IEnumerator ProjectCutscene()
	{
		yield return new WaitForSeconds(0.5f);
		MusicManager.PlaySong(CutsceneClips[6], FadePreviousSong: false, 0f);
		GonerMenu.Instance.ShowMusicCredit("Presentation (Noelle and Berdly)", "MagicFroge");
		CutsceneUtils.RunFreshChat(CutsceneChats[0], 0, ForcePosition: true, OnBottom: true);
		while (ChatboxManager.Instance.ChatIsCurrentlyRunning)
		{
			yield return null;
		}
		yield return new WaitForSeconds(0.5f);
		CutsceneUtils.RunFreshChat(CutsceneChats[0], 1, ForcePosition: true, OnBottom: true);
		while (ChatboxManager.Instance.ChatIsCurrentlyRunning)
		{
			yield return null;
		}
		yield return new WaitForSeconds(0.5f);
		TRB_Projects_Shared.instance.CreateNewLightShadow_NoSound(new Vector2(-0.15f, -1.95f), new Vector2(0.8f, 0.8f));
		TRB_Projects_Shared.instance.Susie.Play("Susie_TRB_ThrowDucttape", -1, 0f);
		CutsceneUtils.PlaySound(CutsceneClips[1]);
		yield return new WaitForSeconds(1.183f);
		CutsceneUtils.PlaySound(CutsceneClips[2]);
		DuctTape.gameObject.SetActive(value: true);
		LightFollowDucttape = true;
		CutsceneUtils.MoveTransformOnArc(DuctTape.transform, Berdly.transform.position + Vector3.up, 2f, 1f);
		yield return new WaitForSeconds(1f);
		CutsceneUtils.ShakeTransform(Berdly.transform);
		CutsceneUtils.PlaySound(CutsceneClips[3]);
		CutsceneUtils.PlaySound(CutsceneClips[4]);
		Berdly.Play("Shock");
		yield return new WaitForSeconds(0.5f);
		CutsceneUtils.MoveTransformLinear(DuctTape.transform, Berdly.transform.position, 0.25f);
		yield return new WaitForSeconds(0.25f);
		DuctTape.sprite = DuctTape_Hit;
		yield return new WaitForSeconds(0.75f);
		LightFollowDucttape = false;
		TRB_Projects_Shared.instance.CreateNewLightShadow_NoSound(new Vector2(1.1f, 1.875f), new Vector2(1.5f, 0.8f));
		CutsceneUtils.RunFreshChat(CutsceneChats[0], 2, ForcePosition: true, OnBottom: true);
		DuctTape.sortingLayerID = SortingLayer.NameToID("BelowPlayer");
		TRB_Projects_Shared.instance.Susie.Play("Idle", -1, 0f);
		while (ChatboxManager.Instance.ChatIsCurrentlyRunning)
		{
			yield return null;
		}
		yield return new WaitForSeconds(0.5f);
		CutsceneUtils.RunFreshChat(CutsceneChats[0], 3, ForcePosition: true, OnBottom: true);
		while (ChatboxManager.Instance.ChatIsCurrentlyRunning)
		{
			yield return null;
		}
		yield return new WaitForSeconds(0.5f);
		CutsceneUtils.RunFreshChat(CutsceneChats[0], 4, ForcePosition: true, OnBottom: true);
		while (ChatboxManager.Instance.ChatIsCurrentlyRunning)
		{
			yield return null;
		}
		yield return new WaitForSeconds(0.5f);
		TRB_Projects_Shared.instance.DoorRenderer.sprite = TRB_Projects_Shared.instance.Sprite_DoorOpen;
		CutsceneUtils.PlaySound(CutsceneClips[0]);
		MusicManager.PauseMusic();
		TRB_Projects_Shared.instance.RemoveLightShadow();
		TRB_Projects_Shared.instance.RotateAlphysToDirection(Vector2.up);
		RotateBerdlyToDirection(Vector2.right);
		RotateNoelleToDirection(Vector2.right);
		SadModeEngaged = true;
		Berdly.Play("IdleN");
		yield return new WaitForSeconds(1f);
		CutsceneUtils.MoveTransformLinear(TRB_Projects_Shared.instance.Toriel.transform, new Vector2(4.6f, 1.35f), 1f);
		TRB_Projects_Shared.instance.Toriel.Play("WalkN");
		yield return new WaitForSeconds(1f);
		TRB_Projects_Shared.instance.Toriel.Play("IdleN");
		yield return new WaitForSeconds(0.25f);
		CutsceneUtils.RunFreshChat(CutsceneChats[1], 0, ForcePosition: true, OnBottom: true);
		while (ChatboxManager.Instance.ChatIsCurrentlyRunning)
		{
			yield return null;
		}
		yield return new WaitForSeconds(0.5f);
		TRB_Projects_Shared.instance.RotateTorielToDirection(Vector2.up);
		CutsceneUtils.MoveTransformLinear(TRB_Projects_Shared.instance.Toriel.transform, new Vector2(4.6f, 2.35f), 0.5f);
		TRB_Projects_Shared.instance.Toriel.Play("WalkN");
		yield return new WaitForSeconds(0.5f);
		TRB_Projects_Shared.instance.Toriel.Play("IdleN");
		CutsceneUtils.FadeOutSprite(TRB_Projects_Shared.instance.Toriel.GetComponent<SpriteRenderer>(), 3f);
		yield return new WaitForSeconds(0.333f);
		CutsceneUtils.RunFreshChat(CutsceneChats[1], 1, ForcePosition: true, OnBottom: true);
		while (ChatboxManager.Instance.ChatIsCurrentlyRunning)
		{
			yield return null;
		}
		Noelle.Play("WalkN");
		Noelle.speed = 1.85f;
		while ((Vector2)Noelle.transform.position != NoelleLeaveWalkPositions[4])
		{
			yield return null;
			if ((Vector2)Noelle.transform.position != NoelleLeaveWalkPositions[NoelleLeaveWalkIndex])
			{
				Noelle.transform.position = Vector2.MoveTowards(Noelle.transform.position, NoelleLeaveWalkPositions[NoelleLeaveWalkIndex], 5f * Time.deltaTime);
				RotateNoelleToDirection(NoelleLeaveWalkDirections[NoelleLeaveWalkIndex]);
				RotateBerdlyToPosition(Noelle.transform.position);
				TRB_Projects_Shared.instance.RotateAlphysToPosition(Noelle.transform.position);
			}
			else if (NoelleLeaveWalkIndex < NoelleLeaveWalkPositions.Length)
			{
				NoelleLeaveWalkIndex++;
			}
		}
		TRB_Projects_Shared.instance.DoorRenderer.sprite = TRB_Projects_Shared.instance.Sprite_DoorClosed;
		Noelle.GetComponent<SpriteRenderer>().enabled = false;
		Noelle.enabled = false;
		CutsceneUtils.PlaySound(CutsceneClips[5]);
		yield return new WaitForSeconds(2f);
		MusicManager.Instance.source.pitch = 0.8f;
		MusicManager.ResumeMusic();
		CutsceneUtils.RunFreshChat(CutsceneChats[1], 2, ForcePosition: true, OnBottom: true);
		while (ChatboxManager.Instance.ChatIsCurrentlyRunning)
		{
			yield return null;
		}
		yield return new WaitForSeconds(0.5f);
		MusicManager.StopSong(Fade: false, 0f);
		MusicManager.Instance.source.pitch = 1f;
		CutsceneUtils.RunFreshChat(CutsceneChats[1], 3, ForcePosition: true, OnBottom: true);
		while (ChatboxManager.Instance.ChatIsCurrentlyRunning)
		{
			yield return null;
		}
		TRB_Projects_Shared.instance.NextProject();
	}

	public void RotateBerdlyToDirection(Vector2 Direction)
	{
		CutsceneUtils.RotateCharacterToDirection(TRB_Projects_Shared.instance.Berdly, "VelocityX", "VelocityY", Direction);
	}

	public void RotateBerdlyToPosition(Vector2 Position)
	{
		CutsceneUtils.RotateCharacterTowardsPosition(TRB_Projects_Shared.instance.Berdly, "VelocityX", "VelocityY", Position);
	}

	public void RotateNoelleToDirection(Vector2 Direction)
	{
		CutsceneUtils.RotateCharacterToDirection(TRB_Projects_Shared.instance.Noelle, "VelocityX", "VelocityY", Direction);
	}

	public void Berdly_Exclaim()
	{
		Berdly.Play("Exclaim");
	}

	public void Berdly_Praise()
	{
		Berdly.Play("Praise");
	}

	public void Berdly_ShockRight()
	{
		Berdly.Play("ShockRight");
	}

	public void Berdly_IdleDown()
	{
		if (SadModeEngaged)
		{
			Berdly.Play("IdleN");
		}
		else
		{
			Berdly.Play("Idle");
		}
		RotateBerdlyToDirection(Vector2.down);
	}

	public void Berdly_IdleUp()
	{
		if (SadModeEngaged)
		{
			Berdly.Play("IdleN");
		}
		else
		{
			Berdly.Play("Idle");
		}
		RotateBerdlyToDirection(Vector2.up);
	}

	public void Berdly_IdleLeft()
	{
		if (SadModeEngaged)
		{
			Berdly.Play("IdleN");
		}
		else
		{
			Berdly.Play("Idle");
		}
		RotateBerdlyToDirection(Vector2.left);
	}

	public void Berdly_IdleRight()
	{
		if (SadModeEngaged)
		{
			Berdly.Play("IdleN");
		}
		else
		{
			Berdly.Play("Idle");
		}
		RotateBerdlyToDirection(Vector2.right);
	}

	public void Noelle_SwitchToNeutralAnimationSet()
	{
		Noelle.Play("IdleN");
	}

	public void Noelle_IdleDown()
	{
		RotateNoelleToDirection(Vector2.down);
	}

	public void Noelle_IdleUp()
	{
		RotateNoelleToDirection(Vector2.up);
	}

	public void Noelle_IdleLeft()
	{
		RotateNoelleToDirection(Vector2.left);
	}

	public void Noelle_IdleRight()
	{
		RotateNoelleToDirection(Vector2.right);
	}

	public void Jockington_Idle()
	{
		TRB_Projects_Shared.instance.Jockington.Play("Talking");
		CutsceneUtils.RotateCharacterToDirection(TRB_Projects_Shared.instance.Jockington, "VelocityX", "VelocityY", Vector2.right);
	}

	public void Jockington_Seated()
	{
		TRB_Projects_Shared.instance.Jockington.Play("Jockington_SitAtTable");
	}
}
